package com.mj.haier.calc.domain;


import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import org.hibernate.annotations.Cache;
import org.hibernate.annotations.CacheConcurrencyStrategy;
import org.springframework.data.elasticsearch.annotations.Document;

import javax.persistence.*;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.time.Instant;

/**
 * The ItfOutcomeStatmentBean entity.
 * 安装单对账单
 * @author LiJie
 */
@ApiModel(description = "The ItfOutcomeStatmentBean entity. 安装单对账单 @author LiJie")
@Entity
@Table(name = "itf_outcome_statment")
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
@Document(indexName = "itfoutcomestatmentbean")
public class ItfOutcomeStatmentBean implements Serializable {

    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    /**
     * 对账单号, 唯一
     */
    @NotNull
    @ApiModelProperty(value = "对账单号, 唯一", required = true)
    @Column(name = "bill_no", nullable = false)
    private String billNo;

    /**
     * 对账单明细行数
     */
    @ApiModelProperty(value = "对账单明细行数")
    @Column(name = "detail_count")
    private int detailCount;

    /**
     * 对账单应结总金额
     */
    @ApiModelProperty(value = "对账单应结总金额")
    @Column(name = "ap_amt", precision = 10, scale = 2)
    private int apAmt;

    /**
     * 对账单激励金额
     */
    @ApiModelProperty(value = "对账单激励金额")
    @Column(name = "reward_amt", precision = 10)
    private int rewardAmt;

    /**
     * 对账单索赔金额
     */
    @ApiModelProperty(value = "对账单索赔金额")
    @Column(name = "reduce_amt", precision = 10)
    private int reduceAmt;

    /**
     * 对账单应付总金额
     */
    @ApiModelProperty(value = "对账单应付总金额")
    @Column(name = "ac_amt", precision = 10)
    private int acAmt;

    /**
     * 供应商（服务商、网点）V码
     */
    @ApiModelProperty(value = "供应商（服务商、网点）V码")
    @Column(name = "vendor_code")
    private String vendorCode;

    /**
     * 供应商名称
     */
    @ApiModelProperty(value = "供应商名称")
    @Column(name = "vendor_name")
    private String vendorName;

    /**
     * 工贸编码
     */
    @ApiModelProperty(value = "工贸编码")
    @Column(name = "st_entity_code")
    private String stEntityCode;

    /**
     * 工贸名称
     */
    @ApiModelProperty(value = "工贸名称")
    @Column(name = "st_entity_name")
    private String stEntityName;

    /**
     * 预算体编码
     */
    @ApiModelProperty(value = "预算体编码")
    @Column(name = "bd_entity_code")
    private String bdEntityCode;

    /**
     * 预算体名称
     */
    @ApiModelProperty(value = "预算体名称")
    @Column(name = "bd_entity_name")
    private String bdEntityName;

    /**
     * 结算员工号
     */
    @ApiModelProperty(value = "结算员工号")
    @Column(name = "st_user_code")
    private String stUserCode;

    /**
     * 结算员姓名
     */
    @ApiModelProperty(value = "结算员姓名")
    @Column(name = "st_user_name")
    private String stUserName;

    /**
     * 费用类型（结算单类型）名称
     */
    @ApiModelProperty(value = "费用类型（结算单类型）名称")
    @Column(name = "fee_type_name")
    private String feeTypeName;

    /**
     * 费用类型（结算单类型）编码
     */
    @ApiModelProperty(value = "费用类型（结算单类型）编码")
    @Column(name = "fee_type_code")
    private String feeTypeCode;

    /**
     * 所属账期（结算年月）
     */
    @ApiModelProperty(value = "所属账期（结算年月）")
    @Column(name = "account")
    private String periodChar;

    /**
     * 结算日期
     */
    @ApiModelProperty(value = "结算日期")
    @Column(name = "created_time")
    private Instant createdTime;

    /**
     * 结算开始日期
     */
    @ApiModelProperty(value = "结算开始日期")
    @Column(name = "bill_begin_date")
    private Instant billBeginDate;

    /**
     * 结算结束日期
     */
    @ApiModelProperty(value = "结算结束日期")
    @Column(name = "bill_end_date")
    private Instant billEndDate;

    /**
     * 业务系统编码
     */
    @ApiModelProperty(value = "业务系统编码")
    @Column(name = "origin_app")
    private String originApp;

    /**
     * 产业编码（项目编码）
     */
    @ApiModelProperty(value = "产业编码（项目编码）")
    @Column(name = "source_name_code")
    private String sourceNameCode;

    /**
     * 产业名称（项目名称）
     */
    @ApiModelProperty(value = "产业名称（项目名称）")
    @Column(name = "source_name")
    private String sourceName;


    /**
     * 账单状态
     */
    @ApiModelProperty(value = "账单状态")
    @Column(name = "status_flag")
    private String statusFlag;

    /**
     * 对接状态,状态流程
     */
    @ApiModelProperty(value = "对接状态,状态流程")
    @Column(name = "dock_status")
    private String dockStatus;

    /**
     * 创建人
     */
    @ApiModelProperty(value = "创建人")
    @Column(name = "create_user")
    private String createUser;

    /**
     * 创建日期
     */
    @ApiModelProperty(value = "创建日期")
    @Column(name = "gmt_create")
    private String gmtCreate;

    /**
     * 公司
     */
    @ApiModelProperty(value = "公司")
    @Column(name = "ADD1")
    private String add1;

    /**
     * 车队ID
     */
    @ApiModelProperty(value = "车队ID")
    @Column(name = "car_team_id")
    private String carTeamId;

    /**
     * 业绩归属负责人
     */
    @ApiModelProperty(value = "业绩归属负责人")
    @Column(name = "frnam")
    private String frnam;

    /**
     * 末级小微编码
     */
    @ApiModelProperty(value = "末级小微编码")
    @Column(name = "last_level")
    private String lastLevel;
    /**
     * 末级小微编码
     */
    @ApiModelProperty(value = "末级小微名称")
    @Column(name = "last_level_name")
    private String lastLevelName;
    /**
     * 法人公司编码
     */
    @ApiModelProperty(value = "法人公司编码")
    @Column(name = "corporation")
    private String corporation;

    /**
     * 订单分类
     */
    @ApiModelProperty(value = "订单分类")
    @Column(name = "business_type")
    private String businessType;

    /**
     * 订单分类
     */
    @ApiModelProperty(value = "支付类型")
    @Column(name = "pay_type")
    private String payType;

    public String getPayType() {
        return payType;
    }

    public void setPayType(String payType) {
        this.payType = payType;
    }

    public String getBusinessType() {
        return businessType;
    }

    public void setBusinessType(String businessType) {
        this.businessType = businessType;
    }

    public String getCreateUser() {
        return createUser;
    }

    public void setCreateUser(String createUser) {
        this.createUser = createUser;
    }

    public String getGmtCreate() {
        return gmtCreate;
    }

    public void setGmtCreate(String gmtCreate) {
        this.gmtCreate = gmtCreate;
    }

    public String getAdd1() {
        return add1;
    }

    public void setAdd1(String add1) {
        this.add1 = add1;
    }

    public String getCarTeamId() {
        return carTeamId;
    }

    public void setCarTeamId(String carTeamId) {
        this.carTeamId = carTeamId;
    }

    public String getFrnam() {
        return frnam;
    }

    public void setFrnam(String frnam) {
        this.frnam = frnam;
    }

    public String getLastLevel() {
        return lastLevel;
    }

    public void setLastLevel(String lastLevel) {
        this.lastLevel = lastLevel;
    }

    public String getLastLevelName() {
        return lastLevelName;
    }

    public void setLastLevelName(String lastLevelName) {
        this.lastLevelName = lastLevelName;
    }

    public String getCorporation() {
        return corporation;
    }

    public void setCorporation(String corporation) {
        this.corporation = corporation;
    }

    public String getStatusFlag() {
        return statusFlag;
    }

    public void setStatusFlag(String statusFlag) {
        this.statusFlag = statusFlag;
    }

    public String getDockStatus() {
        return dockStatus;
    }

    public void setDockStatus(String dockStatus) {
        this.dockStatus = dockStatus;
    }

    public String getBillNo() {
        return billNo;
    }

    public ItfOutcomeStatmentBean billNo(String billNo) {
        this.billNo = billNo;
        return this;
    }

    public void setBillNo(String billNo) {
        this.billNo = billNo;
    }

    public int getDetailCount() {
        return detailCount;
    }

    public ItfOutcomeStatmentBean detailCount(int detailCount) {
        this.detailCount = detailCount;
        return this;
    }

    public void setDetailCount(int detailCount) {
        this.detailCount = detailCount;
    }

    public int getApAmt() {
        return apAmt;
    }

    public ItfOutcomeStatmentBean apAmt(int apAmt) {
        this.apAmt = apAmt;
        return this;
    }

    public void setApAmt(int apAmt) {
        this.apAmt = apAmt;
    }

    public int getRewardAmt() {
        return rewardAmt;
    }

    public ItfOutcomeStatmentBean rewardAmt(int rewardAmt) {
        this.rewardAmt = rewardAmt;
        return this;
    }

    public void setRewardAmt(int rewardAmt) {
        this.rewardAmt = rewardAmt;
    }

    public int getReduceAmt() {
        return reduceAmt;
    }

    public ItfOutcomeStatmentBean reduceAmt(int reduceAmt) {
        this.reduceAmt = reduceAmt;
        return this;
    }

    public void setReduceAmt(int reduceAmt) {
        this.reduceAmt = reduceAmt;
    }

    public int getAcAmt() {
        return acAmt;
    }

    public ItfOutcomeStatmentBean acAmt(int acAmt) {
        this.acAmt = acAmt;
        return this;
    }

    public void setAcAmt(int acAmt) {
        this.acAmt = acAmt;
    }

    public String getVendorCode() {
        return vendorCode;
    }

    public ItfOutcomeStatmentBean vendorCode(String vendorCode) {
        this.vendorCode = vendorCode;
        return this;
    }

    public void setVendorCode(String vendorCode) {
        this.vendorCode = vendorCode;
    }

    public String getVendorName() {
        return vendorName;
    }

    public ItfOutcomeStatmentBean vendorName(String vendorName) {
        this.vendorName = vendorName;
        return this;
    }

    public void setVendorName(String vendorName) {
        this.vendorName = vendorName;
    }

    public String getStEntityCode() {
        return stEntityCode;
    }

    public ItfOutcomeStatmentBean stEntityCode(String stEntityCode) {
        this.stEntityCode = stEntityCode;
        return this;
    }

    public void setStEntityCode(String stEntityCode) {
        this.stEntityCode = stEntityCode;
    }

    public String getStEntityName() {
        return stEntityName;
    }

    public ItfOutcomeStatmentBean stEntityName(String stEntityName) {
        this.stEntityName = stEntityName;
        return this;
    }

    public void setStEntityName(String stEntityName) {
        this.stEntityName = stEntityName;
    }

    public String getBdEntityCode() {
        return bdEntityCode;
    }

    public ItfOutcomeStatmentBean bdEntityCode(String bdEntityCode) {
        this.bdEntityCode = bdEntityCode;
        return this;
    }

    public void setBdEntityCode(String bdEntityCode) {
        this.bdEntityCode = bdEntityCode;
    }

    public String getBdEntityName() {
        return bdEntityName;
    }

    public ItfOutcomeStatmentBean bdEntityName(String bdEntityName) {
        this.bdEntityName = bdEntityName;
        return this;
    }

    public void setBdEntityName(String bdEntityName) {
        this.bdEntityName = bdEntityName;
    }

    public String getStUserCode() {
        return stUserCode;
    }

    public ItfOutcomeStatmentBean stUserCode(String stUserCode) {
        this.stUserCode = stUserCode;
        return this;
    }

    public void setStUserCode(String stUserCode) {
        this.stUserCode = stUserCode;
    }

    public String getStUserName() {
        return stUserName;
    }

    public ItfOutcomeStatmentBean stUserName(String stUserName) {
        this.stUserName = stUserName;
        return this;
    }

    public void setStUserName(String stUserName) {
        this.stUserName = stUserName;
    }

    public String getFeeTypeName() {
        return feeTypeName;
    }

    public ItfOutcomeStatmentBean feeTypeName(String feeTypeName) {
        this.feeTypeName = feeTypeName;
        return this;
    }

    public void setFeeTypeName(String feeTypeName) {
        this.feeTypeName = feeTypeName;
    }

    public String getFeeTypeCode() {
        return feeTypeCode;
    }

    public ItfOutcomeStatmentBean feeTypeCode(String feeTypeCode) {
        this.feeTypeCode = feeTypeCode;
        return this;
    }

    public void setFeeTypeCode(String feeTypeCode) {
        this.feeTypeCode = feeTypeCode;
    }

    public String getPeriodChar() {
        return periodChar;
    }

    public ItfOutcomeStatmentBean periodChar(String periodChar) {
        this.periodChar = periodChar;
        return this;
    }

    public void setPeriodChar(String periodChar) {
        this.periodChar = periodChar;
    }

    public Instant getCreatedTime() {
        return createdTime;
    }

    public ItfOutcomeStatmentBean createdTime(Instant createdTime) {
        this.createdTime = createdTime;
        return this;
    }

    public void setCreatedTime(Instant createdTime) {
        this.createdTime = createdTime;
    }

    public Instant getBillBeginInstant() {
        return billBeginDate;
    }

    public ItfOutcomeStatmentBean billBeginInstant(Instant billBeginInstant) {
        this.billBeginDate = billBeginInstant;
        return this;
    }

    public void setBillBeginInstant(Instant billBeginInstant) {
        this.billBeginDate = billBeginInstant;
    }

    public Instant getBillEndInstant() {
        return billEndDate;
    }

    public ItfOutcomeStatmentBean billEndInstant(Instant billEndInstant) {
        this.billEndDate = billEndInstant;
        return this;
    }

    public void setBillEndInstant(Instant billEndInstant) {
        this.billEndDate = billEndInstant;
    }

    public String getOriginApp() {
        return originApp;
    }

    public ItfOutcomeStatmentBean originApp(String originApp) {
        this.originApp = originApp;
        return this;
    }

    public void setOriginApp(String originApp) {
        this.originApp = originApp;
    }


    public String getSourceNameCode() {
        return sourceNameCode;
    }

    public ItfOutcomeStatmentBean sourceNameCode(String sourceNameCode) {
        this.sourceNameCode = sourceNameCode;
        return this;
    }

    public void setSourceNameCode(String sourceNameCode) {
        this.sourceNameCode = sourceNameCode;
    }

    public String getSourceName() {
        return sourceName;
    }

    public ItfOutcomeStatmentBean sourceName(String sourceName) {
        this.sourceName = sourceName;
        return this;
    }

    public void setSourceName(String sourceName) {
        this.sourceName = sourceName;
    }
    // jhipster-needle-entity-add-getters-setters - JHipster will add getters and setters here, do not remove

    @Override
    public boolean equals(Object o) {
        if (this == o) {
            return true;
        }
        if (o == null || getClass() != o.getClass()) {
            return false;
        }
        ItfOutcomeStatmentBean itfOutcomeStatmentBean = (ItfOutcomeStatmentBean) o;
        return true;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public Instant getBillBeginDate() {
        return billBeginDate;
    }

    public void setBillBeginDate(Instant billBeginDate) {
        this.billBeginDate = billBeginDate;
    }

    public Instant getBillEndDate() {
        return billEndDate;
    }

    public void setBillEndDate(Instant billEndDate) {
        this.billEndDate = billEndDate;
    }

    @Override
    public String toString() {
        return "ItfOutcomeStatmentBean{" +
            ", billNo='" + getBillNo() + "'" +
            ", detailCount=" + getDetailCount() +
            ", apAmt=" + getApAmt() +
            ", rewardAmt=" + getRewardAmt() +
            ", reduceAmt=" + getReduceAmt() +
            ", acAmt=" + getAcAmt() +
            ", vendorCode='" + getVendorCode() + "'" +
            ", vendorName='" + getVendorName() + "'" +
            ", stEntityCode='" + getStEntityCode() + "'" +
            ", stEntityName='" + getStEntityName() + "'" +
            ", bdEntityCode='" + getBdEntityCode() + "'" +
            ", bdEntityName='" + getBdEntityName() + "'" +
            ", stUserCode='" + getStUserCode() + "'" +
            ", stUserName='" + getStUserName() + "'" +
            ", feeTypeName='" + getFeeTypeName() + "'" +
            ", feeTypeCode='" + getFeeTypeCode() + "'" +
            ", periodChar='" + getPeriodChar() + "'" +
            ", createdTime='" + getCreatedTime() + "'" +
            ", billBeginInstant='" + getBillBeginInstant() + "'" +
            ", billEndInstant='" + getBillEndInstant() + "'" +
            ", originApp='" + getOriginApp() + "'" +
            ", sourceNameCode='" + getSourceNameCode() + "'" +
            ", sourceName='" + getSourceName() + "'" +
            "}";
    }
}
